﻿/*
 * IFeatureCollectionInfo
 * 
 * initial implementation : 15.7.2011
 *
 * Copyright (c) Adam Sida, asida@centrum.cz.
 * All rights reserved.
 * 
 * for license see Petra.Gis.License.txt
 */
using System;
using System.Collections.Generic;
using Petra.Gis.DataServices.Metadata;

namespace Petra.Gis.DataServices
{


  /// <summary>
  /// basic functionality required for various spatial data process and display components
  /// to recognize details about spatial data.
  /// </summary>
  public interface IFeatureSet
  {


    /// <summary>
    /// gets original FeatureMetadata as maintained in data source.
    /// returns null when metadata not available.
    /// </summary>
    /// <returns>default FeatureMetadata</returns>
    FeatureMetadata Metadata { get; }




    /// <summary>
    /// gets feature set parameters. Parameters are additional information
    /// such as spatial filter that feature set keeps.
    /// </summary>
    IFeatureSetParameters Parameters { get; }



    /// <summary>
    /// when feature class combines data from various feature classes (even from different data sources, for example in sql)
    /// this method enables to select which FeatureMetadata will apply on output as default.
    /// When complex query occurrs (join), there might be problem automatically recongnize which metadata use.
    /// </summary>
    /// <param name="forceMetadataByFeatureName">forces this object to use metadata from another feature</param>
    /// <returns>FeatureMetadata of feature given by name</returns>
    void ForceFeatureMetadata(string anotherFeatureName);





    /// <summary>
    /// determines type of datasource for this FeatureClass.
    /// </summary>
    FeatureDataSourceTypeEnum FeatureDataSourceType { get; }

  }

}
